1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 <plist version="1.0"> 4 <dict> 5 <key>beforeRunningCommand</key> 6 <string>nop</string> 7 <key>command</key> 8 <string>#!/usr/bin/python 9 """Generate code to warn about a module's removal in Python 3.0. 10 11 XXX Not supported: 12 - Module's in a package do not have their full name generated. 13 - Package's __init__ module; should detect and use the package's name instead. 14 15 """ 16 py_template = """from warnings import warnpy3k 17 warnpy3k("the ${1:%s} module has been removed in Python 3.0", stacklevel=2) 18 del warnpy3k$0""" 19 20 c_template = """ 21 if (PyErr_WarnPy3k("the ${1:%s} module has been removed in " 22 "Python 3.0", 2) < 0) 23 return;$0""" 24 25 26 import imp 27 import os 28 29 file_name = os.path.split(os.environ['TM_FILEPATH'])[1] 30 31 py_suffixes = reversed(sorted((suffix[0] for suffix in imp.get_suffixes() if suffix[2] == imp.PY_SOURCE), key=len)) 32 c_suffixes = reversed(sorted((os.path.splitext(suffix[0])[0] + '.c' 33 for suffix in imp.get_suffixes() if suffix[2] == imp.C_EXTENSION), key=len)) 34 35 pairings = ((py_suffixes, py_template), (c_suffixes, c_template)) 36 37 def create_template(suffixes, template): 38 for suffix in suffixes: 39 if not file_name.endswith(suffix): 40 continue 41 module_name = file_name[:-len(suffix)] 42 return template % module_name 43 else: 44 return None 45 46 for template in (create_template(*pair) for pair in pairings): 47 if not template: 48 continue 49 print template, 50 break 51 else: 52 print 'XXX Could not generate code.'</string> 53 <key>input</key> 54 <string>none</string> 55 <key>name</key> 56 <string>2 to 3 - Module Deletion</string> 57 <key>output</key> 58 <string>insertAsSnippet</string> 59 <key>tabTrigger</key> 60 <string>2to3moddel</string> 61 <key>uuid</key> 62 <string>9519C22B-6AB8-41A1-94F6-079E0B45C147</string> 63 </dict> 64 </plist> 65